SQL Max()函数

您所在的位置:网站首页 Es有没有类似数据库group by 加max的查询 SQL Max()函数

SQL Max()函数

2024-07-03 01:52| 来源: 网络整理| 查看: 265

在本教程中,您将学习如何使用SQL Max函数查找组中的最大值。

1. SQL MAX函数简介

SQL提供MAX()函数,用于在一组值中查找最大值。 以下是MAX函数的语法。

MAX(expression)

MAX函数忽略NULL值。

与SUM,COUNT和AVG函数不同,DISTINCT选项不适用于MAX函数。

2. SQL MAX函数示例

我们将使用employees表来演示MAX函数的工作原理。

desc employees ; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | employee_id | int(11) | NO | PRI | NULL | auto_increment | | first_name | varchar(20) | YES | | NULL | | | last_name | varchar(25) | NO | | NULL | | | email | varchar(100) | NO | | NULL | | | phone_number | varchar(20) | YES | | NULL | | | hire_date | date | NO | | NULL | | | job_id | int(11) | NO | MUL | NULL | | | salary | decimal(8,2) | NO | | NULL | | | manager_id | int(11) | YES | MUL | NULL | | | department_id | int(11) | YES | MUL | NULL | | +---------------+--------------+------+-----+---------+----------------+ 10 rows in set

以下SELECT语句返回employees表中员工的最高薪水。

SELECT MAX(salary) FROM employees; +-------------+ | MAX(salary) | +-------------+ | 24000 | +-------------+ 1 row in set

要获得薪水最高的员工,请使用子查询,如下所示:

SELECT employee_id, first_name, last_name, salary FROM employees WHERE salary = ( SELECT MAX(salary) FROM employees );

执行上面查询语句,得到以下结果 -

+-------------+------------+-----------+--------+ | employee_id | first_name | last_name | salary | +-------------+------------+-----------+--------+ | 100 | Steven | Lee | 24000 | +-------------+------------+-----------+--------+ 1 row in set

子查询返回最高薪水,外部查询获得薪水等于最高薪水的员工。

2.1. SQL MAX与GROUP BY示例

我们通常将MAX函数与GROUP BY子句结合使用来查找每个分组的最大值。

例如,可以使用MAX函数查找每个部门中员工的最高薪水,如下所示:

SELECT department_id, MAX(salary) FROM employees GROUP BY department_id;

执行上面查询语句,得到以下结果:

要在结果中包含部门名称,我们将employees表与departments表连接,如下所示:

SELECT d.department_id, department_name, MAX(salary) FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id;

执行上面查询语句,得到以下结果:

2.2. SQL MAX带有ORDER BY示例

与其他聚合函数一样,要根据MAX函数的结果对结果集进行排序,必须将MAX函数放在ORDER BY子句中。

例如,以下语句返回每个部门中员工的最高工资,并根据最高工资对结果集进行排序。

SELECT d.department_id, department_name, MAX(salary) FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id ORDER BY MAX(salary) DESC;

执行上面查询语句,得到以下结果:

2.3. SQL MAX带有HAVING示例

在MAX函数使用HAVING子句将条件添加到GROUP BY子句汇总分组。

例如,要获得具有最高薪水大于12000的员工的部门,请在MAX函数使用HAVING子句,如下所示:

SELECT d.department_id, department_name, MAX(salary) FROM employees e INNER JOIN departments d ON d.department_id = e.department_id GROUP BY e.department_id HAVING MAX(salary) > 12000;

执行上面示例代码,得到以下结果:

+---------------+-----------------+-------------+ | department_id | department_name | MAX(salary) | +---------------+-----------------+-------------+ | 2 | 市场营销 | 13000 | | 8 | 销售 | 14000 | | 9 | 行政人员 | 24000 | +---------------+-----------------+-------------+ 3 rows in set

在本教程中,我们将演示如何使用MAX函数来查找一分组值中的最大值。

上一篇: SQL Count()函数 下一篇: SQL Min()函数


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3